package org.fast.project.web.transfer;

import org.fast.project.service.bo.AddUserDO;
import org.fast.project.service.bo.UpdateUserDO;
import org.fast.project.service.bo.UserDO;
import org.fast.project.web.vo.UserVO;
import org.mapstruct.Mapper;
import org.mapstruct.MappingTarget;

import java.util.List;

/**
 * @author : lilith·bristol
 * @program : spring-web-archetype-transfer
 * @description : 用户类自动转换器
 * @date : 2020-04-20 02:18
 **/
@Mapper(componentModel = "spring")
public interface UserDo2VoTransfer {

    /**
     * 转换为用户数据展示对象
     * @param UserDO 用户数据访问对象
     * @return fast.project.vo.UserVO
     * @author lilith·bristol
     * @date 2:21 2020/4/20
     */
    UserVO doToVo(UserDO UserDO);

    /**
     * 批量转换一组用户数据访问对象集合为用户数据展示对象
     * @param UserDOList 用户数据访问对象集合
     * @return java.util.List<fast.project.vo.UserVO>
     * @author lilith·bristol
     * @date 2:22 2020/4/20o
     */
    List<UserVO> doToVo(List<UserDO> UserDOList);

    /**
     * 将新增用户数据对象转为用户持久化对象
     * @param addUserDo 新增用户数据对象
     * @return fast.project.po.UserDO
     * @author lilith·bristol
     * @date 1:11 2020/4/22
     */
    UserDO addDoToPo(AddUserDO addUserDo);

    /**
     * 更新用户对象的域数据
     * @param updateUserDO 更新用户对象
     * @param UserDO       被更新的持久化对象
     * @author lilith·bristol
     * @date 22:00 2020/4/22
     */
    void updateUserDO(UpdateUserDO updateUserDO, @MappingTarget UserDO UserDO);
}
